import axios from "axios";
import {ElMessage} from "element-plus";
import router from "@/router";

const authItemName = "authorize"


const defaultError = (error) => {
    console.error("错误详情:", error)  // 打印整个错误对象，便于调试
    const status = error.response ? error.response.status : null
    const message = error.response && error.response.data && error.response.data.message
        ? error.response.data.message
        : error.message || '发生了一些错误，请联系管理员';  // 优化：如果没有 response 数据，则使用 error.message

    if (status === 429) {
        ElMessage.error(`请求过多：${message}`)  // 显示具体的错误信息
    } else if (status === 401) {
        ElMessage.error(`未授权：${message}`)  // 401 错误（未授权）
    } else if (status === 500) {
        ElMessage.error(`服务器错误：${message}`)  // 500 错误（服务器内部错误）
    } else {
        ElMessage.error(message)  // 显示具体的错误信息（如果有）
    }
}



const defaultFailure = (message, status, url) => {
    console.warn(`请求地址: ${url}, 状态码: ${status}, 错误信息: ${message}`)
    ElMessage.warning(message)
}


function internalPost(url, data, success, failure, error = defaultError){
    axios.post(url, data).then(({data}) => {
        if(data.code === 200) {
            success(data.data)
        } else {
            failure(data.message, data.code, url)
        }
    }).catch(err => error(err))
}

function internalGet(url, success, failure, error = defaultError){
    axios.get(url).then(({data}) => {
        if(data.code === 200) {
            success(data.data)
        } else {
            failure(data.message, data.code, url)
        }
    }).catch(err => error(err))
}


function post(url, data, success, failure = defaultFailure) {
    internalPost(url, data, success, failure)
}


function get(url, success, failure = defaultFailure) {
    internalGet(url, success, failure)
}


export { post, get }
